home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-06 | 2.4 KB | 102 lines | [TEXT/CWIE] |
- {•This sourcecode is an example for creating a FKey coderesource with•}
- {•Metrowerks Pascal. It is copyrighted by Peter Hoerster and released•}
- {•for free use in any Shareware or Freeware product as a way to thank all•}
- {•programmers who share code snippets. You may put this sources on any•}
- {•CD ROM or any Archive Server but you may not sell it. •}
-
- {• For comments please write to <hoerster@muenster.de>•}
-
-
-
- unit SentenceCaps;
-
- interface
-
- uses
- Types, OSUtils, GestaltEqu, Script, notification, Resources, Events,
- PascalA4, QuickDraw, ToolUtils, Memory, LowMem, Scrap;
-
-
-
- {$MAIN}
-
- procedure main;
-
- implementation
-
- procedure dopaste;
- const
- pastecode=2422;
- var
- qel: EvQelPtr;
- begin
- if ppostevent(3, pastecode, qel) = noerr then
- qel^.evtqmodifiers := cmdkey;
- end;
-
-
- procedure main;
- var
- oldA4: LongInt;
- myerr: oserr;
- myclipsize, templongint: longint;
- myclipHandle: handle;
-
- procedure dosentence;
- var
- lastoffset, offset, dist, i: longint;
- offsets: OffsetTable;
- teststr: str15;
- chartype: longint;
- begin
- offset := 0;
- repeat
- chartype := CharacterType(mycliphandle^, offset, smcurrentscript);
- offset := offset + 1;
- until BAND(chartype, smcTypeMask) <> smCharPunct;
- uppertext(ptr(ord4(myclipHandle^) + offset - 1), 1);
- offset := 0;
- lastoffset := 0;
- repeat
- teststr := '1234';
- FindWord(myclipHandle^, myclipsize, offset, true, nil, offsets);
- offset := offsets[0].offfirst;
- dist := offset - lastoffset;
- if dist > 4 then
- dist := 4;
- blockmove(ptr(ord4(myclipHandle^) + lastoffset), @teststr[1], dist);
- lastoffset := offsets[0].offfirst;
- offset := offsets[0].offsecond;
- for i := 1 to 4 do
- if teststr[i] in ['.', '?', '!'] then
- begin
- uppertext(ptr(ord4(myclipHandle^) + offset), 1);
- end;
- until offset >= myclipsize;
- end;
-
-
- begin
- oldA4 := SetCurrentA4;
- myclipsize := GetScrap(nil, 'TEXT', templongint);
- mycliphandle := Tempnewhandle(myclipsize,myerr);
- if myerr=noerr then
- begin
- myclipsize := GetScraP(myclipHandle, 'TEXT', templongint);
- if myclipsize > 0 then
- begin
- Temphlock(mycliphandle,myerr);
- if myerr=noerr then
- begin
- dosentence;
- myerr := ZeroScrap;
- myerr := putscrap(myclipsize, 'TEXT', myclipHandle^);
- dopaste;
- end;
- Temphunlock(myCliphandle,myerr);
- end;
- end;
- TempDisposeHandle(myCliphandle,myerr);
- oldA4 := SetA4(oldA4);
- end;
- end.